home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue30 / crossref / DbCrCode / HtmlData.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1997-11-19  |  2.2 KB  |  107 lines

  1. unit HtmlData;
  2.  
  3. interface
  4.  
  5. uses
  6.   Classes, DB;
  7.  
  8. type
  9.   THtmlStrings = class (TStringList)
  10.   public
  11.     procedure AddHeader (Title: string);
  12.     procedure AddFooter;
  13.   end;
  14.  
  15.   THtmlData = class (THtmlStrings)
  16.   public
  17.     constructor Create (DataSet: TDataSet);
  18.     procedure AddHeader (Title: string);
  19.     procedure AddFooter;
  20.     procedure AddTableRow (LinkStr: string);
  21.   private
  22.     Data: TDataSet;
  23.   end;
  24.  
  25. implementation
  26.  
  27. uses
  28.   SysUtils;
  29.  
  30. ////// THtlmStrings //////
  31.  
  32. procedure THtmlStrings.AddHeader (Title: string);
  33. begin
  34.   Clear;
  35.   Add ('<HTML>');
  36.   Add ('<HEAD>');
  37.   Add ('<TITLE>' + Title + '</TITLE>');
  38.   Add ('</HEAD>');
  39.   Add ('<BODY>');
  40.   Add ('<H1><CENTER>' + Title + '</CENTER></H1>');
  41. end;
  42.  
  43. procedure THtmlStrings.AddFooter;
  44. begin
  45.   Add ('<HR>');
  46.   Add ('Generated by the program ' +
  47.     ExtractFileName (ParamStr(0)));
  48.   Add ('</BODY>');
  49.   Add ('</HTML>');
  50. end;
  51.  
  52. ////// THtlmData //////
  53.  
  54. constructor THtmlData.Create (DataSet: TDataSet);
  55. begin
  56.   inherited Create;
  57.   Data := DataSet;
  58. end;
  59.  
  60. procedure THtmlData.AddHeader (Title: string);
  61. var
  62.   I: Integer;
  63. begin
  64.   inherited AddHeader (Title);
  65.  
  66.   // start table with borders
  67.   Add('<table border>');
  68.   // new row, with the table headers (tag <th>) for the visible fields
  69.   Add('<tr>');
  70.   for I := 0 to Data.FieldCount - 1 do
  71.     if Data.Fields[I].Visible then
  72.       Add('<th>' + Data.Fields[I].FieldName + '</th>');
  73.   Add('</tr>');
  74. end;
  75.  
  76. procedure THtmlData.AddFooter;
  77. begin
  78.   // end the table
  79.   Add('</table>');
  80.  
  81.   inherited AddFooter;
  82. end;
  83.  
  84. procedure THtmlData.AddTableRow (LinkStr: string);
  85. var
  86.   I: Integer;
  87. begin
  88.   // new row, with table data (tag <td>)
  89.   Add('<tr>');
  90.   if LinkStr <> '' then
  91.     Add('<td><a href="' + linkStr +
  92.       Data.Fields[0].DisplayText + '.htm">'
  93.       + Data.Fields[0].DisplayText + '</a></td>')
  94.   else
  95.     Add('<td>' + Data.Fields[0].DisplayText + '</td>');
  96.  
  97.   for I := 1 to Data.FieldCount - 1 do
  98.     if Data.Fields[I].Visible then
  99.       if Data.Fields[I].DisplayText <> '' then
  100.         Add('<td>' + Data.Fields[I].DisplayText + '</td>')
  101.       else
  102.         Add('<td><p></td>');
  103.   Add('</tr>');
  104. end;
  105.  
  106. end.
  107.